/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package javaapplication1;

import Interface.TelaPrincipal;

/**
 *
 * @author Diego
 */
public class FilaUsuario {
    private FilaProcesso[] fila;
    private int quantum;

    public FilaUsuario(){
        fila = new FilaProcesso[3];
        for (int i = 0; i < 3; i++){
            fila[i] = new FilaProcesso();
        }
        quantum = 2;
    }

    public FilaProcesso getFila(int i) {
        return fila[i];
    }

    public int getQuantum() {
        return quantum;
    }

    boolean vazia(){
        for (int i = 0; i < 3; i++){
            if (fila[i]!=null){
                return(false);
            }
        }
        return (false);
    }

    public void add (Processos pr){
        if (pr.getPrioridadeFeedback()<+3){
            pr.setPrioridadeFeedback(pr.getPrioridadeFeedback()+1);
        }
        else{
            pr.setPrioridadeFeedback(1);
        }
        fila[pr.getPrioridadeFeedback()-1].add(pr);
    }

    public Processos remove() throws Exception{
        for (int i = 0; i < 3; i++){
            if (!fila[i].vazia()){
                TelaPrincipal.getInstancia().escreverHistorico("O "+fila[i].head().getNome()+" saiu da fila de usuário.\n");
                return(fila[i].remove());
            }
        }
        return(null);
    }

    public String imprime(){
        String retorno ="";
        for(int i=0; i<3; i++){
            Processos pr = fila[i].fila.peek();
            if (pr!=null){
                retorno+=pr.getNome()+" ; ";
            }
        }
        return retorno;
    }

    public Processos head(){
        for (int i = 0; i < 3; i++){
            if (!fila[i].vazia()){
                return(fila[i].head());
            }
        }
        return(null);
    }
}
